package questions

// MultipleChoiceQuestion 多选题实现
type MultipleChoiceQuestion struct {
	BaseQuestion `json:",inline"`        // 嵌入基础题目结构
	Settings     *MultipleChoiceSettings `json:"settings"` // 具体设置
}

// MultipleChoiceSettings 多选题设置
type MultipleChoiceSettings struct {
	Options        []*MultipleChoiceOption `json:"options"`        // 选项列表
	CorrectOptions []int                   `json:"correctOptions"` // 正确选项ID列表
	MinSelected    *int                    `json:"minSelected"`    // 最少选择数量
	MaxSelected    *int                    `json:"maxSelected"`    // 最多选择数量
	DisplayType    string                  `json:"displayType"`    // 显示类型
	Randomize      bool                    `json:"randomize"`      // 是否随机排序选项
	HasOtherOption bool                    `json:"hasOtherOption"` // 是否有"其他"选项
	PartialScoring bool                    `json:"partialScoring"` // 是否支持部分得分
	ScoreStrategy  string                  `json:"scoreStrategy"`  // 得分策略："all_or_nothing", "proportional"
	Answer         *MultipleChoiceAnswer   `json:"answer"`         // 多选题答案
}

// MultipleChoiceOption 选项结构，用于选择题
type MultipleChoiceOption struct {
	ID    *int   `json:"id"`              // 选项ID
	Text  string `json:"text"`            // 选项文本
	Value string `json:"value,omitempty"` // 选项值
	Order int    `json:"order"`           // 排序号
}

// MultipleChoiceAnswer 多选题答案
type MultipleChoiceAnswer struct {
	SelectedOptionIDs []int  `json:"selectedOptionIds"`    // 选中的选项ID列表
	OtherValue        string `json:"otherValue,omitempty"` // "其他"选项的填写内容
}

// GetType 获取题目类型
func (m MultipleChoiceSettings) GetType() QuestionType {
	return MultipleChoice
}

// GetSettings 获取多选题设置，实现Question接口
func (mq MultipleChoiceQuestion) GetSettings() *MultipleChoiceSettings {
	return mq.Settings
}
